/****************************************************************************************************/
/**
\file       SchM.h
\brief      Scheduler module main functionality of the scheduler
\date       08/03/2014
*/
/****************************************************************************************************/

#ifndef SCH_H        /*prevent duplicated includes*/ 
#define SCH_H  

/****************************************************************************************************
* Include files
*****************************************************************************************************/
#include "Std_Types.h"
#include "SchM_Cfg.h"
#include "SchM_Types.h"
/****************************************************************************************************
* Definition of module wide MACROS / #DEFINE-CONSTANTS 
*****************************************************************************************************/

typedef enum 
{
    READY,
    RUNNING,
    SUSPENDED,
    WAITING,
}schM_taskStatusType;


/****************************************************************************************************
* Module wide variables 
*****************************************************************************************************/

typedef struct 
{
  SchM_TaskConfigType taskConfig;
  u8 taskStatus; 
}SchM_TaskBlockControlType;



/****************************************************************************************************
* Function Prototypes
*****************************************************************************************************/

void SchM_Init(const SchM_TaskConfigType *SchM_Config);
void SchM_DeInit(void);
void SchM_Start(void);
void SchM_OsTick(void);
void SchM_Background(void);

#endif /* SCH_H */ 